/**
 * https://leetcode-cn.com/problems/longest-consecutive-sequence/
 * 最长连续序列
 * 给定一个未排序的整数数组 nums ，找出数字连续的最长序列（不要求序列元素在原数组中连续）的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
 * @param nums 
 */
const longestConsecutive = (nums: number[]): number => {
    // 边界判断
    if (nums.length === 0) return 0

    const set = new Set<number>()
    for (let v of nums) {
        set.add(v)
    }   

    let ans = 0

    for (let num of nums) {
        if (!set.has(num - 1)) {
            // 当前没有比它连续小的
            let cur = num; // 记录数字

            // 记录连续的
            let sizes = 1;

            while(set.has(cur + 1)) {
                cur++;
                sizes++;
            }

            ans = Math.max(ans, sizes)
        }
    }

    return ans
};